home *** CD-ROM | disk | FTP | other *** search
- #include "polylistP.h"
- static int BlockSize, array_size;
- static Poly *mystack, *stackptr;
- static int count = 0, debug = 0;
-
- int
- initstack()
- {
- array_size = 1;
- BlockSize = 1024;
- count = 0;
- if ((mystack = OOGLNewN (Poly, BlockSize )) == (Poly *) NULL) return(0);
- stackptr = mystack;
- return(1);
- }
-
- int
- push(pp)
- Poly *pp;
- {
- register int i;
- if (stackptr >= &mystack[BlockSize*array_size]) {
- if (debug)
- fprintf(stderr,"allocating again: size is now %d\n",array_size*BlockSize);
- array_size = array_size*2;
- if ((mystack = OOGLRenewN(Poly,mystack, array_size*BlockSize)) == (Poly *) NULL) return (0);
- stackptr = &mystack[count];
- }
- *stackptr = *pp;
- if ((stackptr->v = OOGLNewN(Vertex *, pp->n_vertices)) == (Vertex **) NULL)
- return(0);
- for (i=0; i<pp->n_vertices; ++i) stackptr->v[i] = pp->v[i];
- stackptr++;
- count++;
- return(1);
- }
-
- int
- getsize()
- {
- return(count);
- }
-
- Poly *
- getstack()
- {
- return(mystack);
- }
-